package org.example.mallchat.domain.entity;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @author: zzh
 * @date: 2024/12/24 16:08:22
 * @version: 1.0
 */
@Data
public class IpInfo  implements Serializable {
    private static final long serialVersionUID = 1L;
    //注册时的ip
    private String createIp;
    //注册时的ip详情
    private IpDetail createIpDetail;
    //最新登录的ip
    private String updateIp;
    //最新登录的ip详情
    private IpDetail updateIpDetail;

    /**
     * 更新ip信息 , 以及保存注册的ip信息
     * @param ip
     */
    public void refreshIp(String ip) {
        if (StrUtil.isEmpty(ip)){
            return;
        }
        //更新最新登录ip
        updateIp = ip;
        // 注册的ip
        if (createIp == null){
            createIp = ip;
        }
    }

    /**
     * 判断是否需要刷新ip
     * @return
     */
    public String needRefreshIp() {
        // 判断当前最新的ip信息和最新的ip信息中的ip是否一致
        if (ObjectUtil.isNull(updateIpDetail) || updateIpDetail.getIp() == null || !updateIpDetail.getIp().equals(updateIp)){
            return updateIp;// 需要刷新ip
        }
        // 不需要刷新ip详细信息
        return null;
    }

    /**
     * 更新ip详细信息
     * @param ipDetail
     */
    public void refreshIpDetail(IpDetail ipDetail) {
        if (Objects.equals(createIp, ipDetail.getIp())) {
            createIpDetail = ipDetail;
        }
        if (Objects.equals(updateIp, ipDetail.getIp())) {
            updateIpDetail = ipDetail;
        }
    }
}
